package com.tacoid.pweek;
import java.util.HashMap;
import java.util.Map;
import com.badlogic.gdx.assets.AssetManager;
import com.badlogic.gdx.audio.Sound;
import com.tacoid.pweek.PreferenceManager.Preference;
import com.tacoid.tracking.TrackingManager;
public class SoundPlayer {
static public SoundPlayer instance = null;
static public enum SoundType {
ROTATE,
MOVE,
FALL,
EXPLODE,
TOUCH_MENU,
GARBAGE,
WIN,
LOSE,
NUISANCE
}
private boolean muted = false;
private Map<SoundType, Sound> sounds;
public void init(AssetManager manager) {
sounds = new HashMap<SoundType, Sound>();
sounds.put(SoundType.ROTATE, manager.get("sounds/bleep2.wav", Sound.class));
sounds.put(SoundType.MOVE, manager.get("sounds/bleep.wav", Sound.class));
sounds.put(SoundType.FALL, manager.get("sounds/bleep.wav", Sound.class));
sounds.put(SoundType.EXPLODE, manager.get("sounds/explode.wav", Sound.class));
sounds.put(SoundType.TOUCH_MENU, manager.get("sounds/click.wav", Sound.class));
sounds.put(SoundType.GARBAGE, manager.get("sounds/bleep.wav", Sound.class));
sounds.put(SoundType.WIN, manager.get("sounds/bleep.wav", Sound.class));
sounds.put(SoundType.LOSE, manager.get("sounds/bleep.wav", Sound.class));
sounds.put(SoundType.NUISANCE, manager.get("sounds/nuisance.wav", Sound.class));
if(!PreferenceManager.getInstance().isPreferenceDefined(Preference.SOUND_STATE)) {
PreferenceManager.getInstance().setPreference(Preference.SOUND_STATE, "on");
} else {
if(PreferenceManager.getInstance().getPreference(Preference.SOUND_STATE).equals("off")) {
muted = true;
}
}
}
private SoundPlayer() {
}
public static SoundPlayer getInstance() {
if(instance == null) {
instance = new SoundPlayer();
}
return instance;
}
public void playSound(SoundType sound, float volume, boolean randomize) {
Sound s = sounds.get(sound);
long id;
id = s.play(muted?0:volume);
if(randomize)
s.setPitch(id, (float) (1.0f+(Math.random()*0.1 - 0.05)));
}
public void playSound(SoundType sound, float volume, float pitch) {
Sound s = sounds.get(sound);
long id;
id = s.play(muted?0:volume);
s.setPitch(id, pitch);
}
public void mute() {
muted = true;
TrackingManager.getTracker().trackEvent("UI", "sound", "sound mute", null);
PreferenceManager.getInstance().setPreference(Preference.SOUND_STATE, "off");
}
public void unmute() {
muted = false;
TrackingManager.getTracker().trackEvent("UI", "sound", "sound unmute", null);
PreferenceManager.getInstance().setPreference(Preference.SOUND_STATE, "on");
}
public boolean isMuted() {
return muted;
}
}